package Day024_枚举_正则表达式.demo2_方法引用;

import java.util.ArrayList;

/**
 * @author zhangyan
 * @date 2020/5/18 10:13
 */
public class Test2_构造方法引用格式 {
    public static void main(String[] args) {
        //构造方法引用格式: 类名::new

        //创建集合
        ArrayList<String> list = new ArrayList<>();
        list.add("迪丽热巴");
        list.add("古力娜扎");
        list.add("马尔扎哈");
        list.add("泷泽萝拉");

        //需求:把集合中的元素转换Person对象,打印输出
        //由于方法引用是用来替换特定情况下的Lambda表达式,所以使用Stream流(方法的参数大多是函数式接口)

        //Stream流的使用:(Day014)
        //获取Stream流,调用map方法 把字符串类型转换成Person类对象,通过foreach方法 把每个Person对象打印
        list.stream().map((String name)->{return new Person(name);}).forEach((Person p)->{ System.out.println(p); });

        //直接方法引用Person类的构造方法 替换Lambda表达式
        list.stream().map(Person::new).forEach((Person p)->{ System.out.println(p); });
    }
}
